در دنیای کامپیوتر تقریباً هرچند سال یک اتفاق شگفتانگیز رخ میدهد. برای مثال پیدایش زبانهای برنامهنویسی شبیه به اندروید یا فلاتر و ... که هرکدام تحویلی بزرگ را رقم میزنند؛ اما در این میان زبان برنامهنویسی جاوا اسکریپت دو بار شگفتی آفریده است. بار اول مرورگرهای اینترنتی را هوشمندتر و کاراتر کرد؛ و بار دوم تبدیل به تحولی در دنیای زبانهای برنامهنویسی بکاند و موبایل شد.
جاوا اسکریپت در ابتدا برای پردازش فرمهای اینترنتی برای مرورگرها طراحی شد و اولین بار در مرورگر نت اسکیپ در سال 1990 توسط یرندان آیک توسعه یافت.
آشنایی با جاوا اسکریپت
باید یادآوری کنم که زبان جاوا اسکریپت را با زبان جاوا اشتباه نگیرید. این دو باهم فرق میکنند. زبان جاوا در ابتدا برای اجرای یک کد واحد بر روی همه سیستمعاملها طراحی شد، درحالیکه جاوا اسکریپت محدود به مرورگرهای اینترنتی بود.
در آن زمان زبان جاوا اسکریپت آنقدر محدود بود که به آن زبان اسکریپتی اطلاق شد؛ یعنی زبانی که شبیه زبان برنامهنویسی است ولی کاملاً محدود به فیلد و المانهای صفحات وب است. به معنای دیگر، نمیتوان آن در بهصورت گسترده و بر روی کامپیوتر اجرا کرد.
جاوا اسکریپت در سالهای بعد ارتقاء یافت و به ورژن های 2 و 3 ارتقاء پیدا کرد؛ اما در سال 2018 همهچیز در مورد جاوا اسکریپت تغییر کرد. در این سال یک فریم ورک به نام نود جی اس NodeJS با زبان C++ توسعه پیدا کرد که قادر بود زبان جاوا اسکریپت را برای ماشین قابلفهمتر کند. بهبیاندیگر این فریم ورک میتوانست جاوا اسکریپت را به سیستمعامل و درنهایت به ماشین متصل کند. درنتیجه جاوا اسکریپت هم همانند زبانهای قدرتمند دیگر مانند جاوا و پایتون و سی پلاس پلاس قادر به اجرای مستقیم کدهای خود بر روی ماشین خواهد بود.
فریم ورک NodeJS خود بر روی موتور کرومیوم توسعه یافته است. این موتور مترجم در ابتدا برای مرورگر سافاری طراحی شد که یکی از محصولات شرکت اپل است. سپس شرکت اپل هسته موتور جستجوی سافاری را با نام کرومیوم منتشر کرد و بعدازآن مرورگر کرومیوم خلق شد.
درنهایت شرکت گوگل یک نسخه از مرورگر کرومیوم را با نام گوگل کروم برای کاربران خود توسعه داد و پرچمدار این مرورگر شد؛ اما موتور کرومیوم همچنان رایگان توسعه داده شد و خلاقان دنیای برنامهنویسی که لیست بلندی را شامل میشوند، فریم ورک NodeJS را بهمنظور اجرای زبان جاوا اسکریپت بر روی ماشین توسعه دادند؛ اما کار باعث شد تا جاوا اسکریپت در پشته کامپیوتر یا بهاصطلاح بکاند هم بتواند اجرای بسیار خوبی را داشته باشد و به سختافزار و خواندن و نوشتن فایلها دسترسی داشته باشد.
اگر از من بپرسند که جاوا اسکریپت چیست؟ من میگویم معجزهٔ دنیای برنامهنویسی است. شاید اگر تا 10 سال پیش کسی میگفت من برنامهنویس جاوا اسکریپت هستم، کسی او زیاد جدی نمیگرفت تا اینکه موتور فریم ورک NodeJS وارد میدان شد.
در حال حاضر جاوا اسکریپت قدرت بسیار زیادی دارد و میتوان گفت همتای فرم ورک های قدرتمندی همچون جاوا، پایتون و حتی خود سی پلاس پلاس قادر به اجرای کدهای خود است.
تنها بعد از خلق NodeJS فریم ورک های زیرشاخه بسیاری برای امور مختلف ایجاد شد که قدرت جاوا اسکریپت را چندین برابر کرد و میتوان گفت حالا جاوا اسکریپت از حالت اسکریپت بودن خود تا حدود زیادی خارج شده و خودش به یک زبان قدرتمند تبدیل شده است.
در ادامه چندین فریم ورک را معرفی میکنیم که با جاوا اسکریپت بهآسانی کار میکنند:
جاوا اسکریپت در دنیای وبسایتها
خب مسلم است که اولین کاربرد جاوا اسکریپت در اجرای وبسایتهای پویا است که حتی پردازش طراحیها را هم در برمیگیرند. از زمانی که قابلیت پیوست فایل جاوا اسکریپت با پسوند .js به صفحات وب اضافه شد، برنامهنویسان خلاق بستههای جدیدی را برای استفاده بهینهتر ایجاد کردند. هرکدام از این بسته قابلیتهایی را در اجرای صفحات وب اضافه میکنند؛ بنابراین باید ابتدا به سراغ این دسته از بستهها برویم تا با کاربرد آنها آشنا شویم.
jQuery
این بسته قابلیت دسترسی بهتمامی المانهای صفحه را فراهم میکند و میتوان طراحیها را با این بسته پردازش کرد. این بسته آنقدر قدرتمند است که بستههای جدیدتر وجود جی کوئری را برای اجرای خود ضروری میکنند.
Bootstrap
این بسته علاوه بر اینکه قابلیت ریسپانسیو را به صفحات اضافه میکند، المانهای آمادهای را ایجاد کرده که تنها با قرار دادن نام کلاس آنها، اجرا میشوند و عملکرد فیلدها و فرمها را بهبود میبخشند. بهعلاوه بعضی از المانها کاملاً جدید هستند و شیوه جدیدی از طراحی را تعریف میکنند.
Angular
این بسته سعی دارد تا جایی که ممکن است برنامههای دسکتاپ را تقلید کند و صفحات بدون نیاز به بارگذاری جدید را مدیریت کند. این بسته توسط شرکت گوگل توسعه پیدا کرده و اگر با محصولات این شرکت مانند جیمیل، صفحه گسترده و یا گوگل درایو کار کرده باشید، میتوانید نرم بودن و اجرای سریع و بدون بارگذاری جدید را احساس کنید.
این بسته سعی دارد همه اطلاعات را به شیوه AJAX و با اتصال به REST API بارگذاری کند تا بارگذاری تا حد ممکن پایین بیاید.
Vue JS
سعی دارد تا همزمان شبیه با jQuery و Bootstrap عمل کند و همزمان با دسترسی به المانها طراحی صفحات را مدیریت کند.
Next JS
برای اجرای سریعتر وبسایتهای تکصفحهای SSR مناسب است.
اینها معروفترین بستههایی هستند که بیشتر برنامهنویسان آنها را میشناسند؛ اما حداقل 15 بسته دیگر هم وجود دارد که هرکدام قابلیتهای جدید را به طراحی و برنامهنویسی شما میدهند.
فریمورکهای کاربردی جاوا اسکریپت
در ادامه با برخی از فریمورکهایی که واقعاً تحولی عظیم را در دنیای برنامهنویسی ایجاد کردهاند، آشنا میشویم.
نود جی اس سمت سرور (NodeJS)
چه کسی باور میکند که بتوان با جاوا اسکریپت از سمت سرور برنامهنویسی کرد؟
این زبان تا به امروز را یک زبان محدود و سمت مشتری میشناختیم اما امروز این زبان بهواسطه سرویس http در NodeJS میتواند پشتههای وبسایت یا همان بکاند را هم پردازش کند. تا امروز زبان ASP و PHP زبانهای اصلی در سمت سرور بودند اما امروز شاهد رقیب جدیدی هستیم که پا را فراتر گذاشته است.
حالا دیگر نیاز نیست برای برنامهنویسی وبسایتها چندین زبان را باهم یاد بگیرید. فقط کافی است زبان HTML و Java Script را درست و کامل یاد بگیرید. در نسخههای قبل NodeJS، این فریم ورک فقط از یک Thread پشتیبانی میکرد و برای پردازشهای سنگین مناسب نبود؛ اما امروز قادر است چند پردازش همزمان و Multi Thread را انجام دهد. پس اگر روزی با جاوا اسکریپت وبسایتی به بزرگی و شبیه به خود گوگل هم راهاندازی شد، اصلاً تعجب نکنید!
الکترون جی اس (Electron JS)
فریم ورک الکترون جی اس بر روی فریم ورک NodeJS توسعه یافته و به زبان جاوا اسکریپت قالب و نمای گرافیکی میدهد. این فریم ورک بر روی هسته مرورگر کرومیوم توسعه یافته میتوان گفت یک مرورگر است که کار یک برنامه کامپیوتر را انجام میدهد. بهاینترتیب میتوانید برنامههای کامپیوتری را خلق کنید که بر روی 3 سیستمعامل اصلی ویندوز، لینوکس و مکینتاش اجرا شود و درست شبیه به برنامههای اصلی خود کامپیوتر عمل کند.
شاید باور کردنش سخت باشد که بیشتر محصولات شرکت Adobe مانند فتوشاپ، افترافکتز و پریمایر همگی بر روی نسخه توسعهیافتهٔ الکترون جی اس بازنویسی شدهاند؛ اما برنامهنویسی آنها بهقدری ماهرانه انجام شده که میتوانند به کمک زبان جاوا اسکریپت به کتابخانههای پیوند پویا DLL (Dynamic link library) هم متصل شوند و افزونههای خارجی را پشتیبانی کنند.
مایکروسافت حتی برای بازنویسی برنامه اسکایپ از این فریم ورک استفاده کرده است. بهعلاوه مایکروسافت محیط کد نویسی جدیدی را با نام Visual Studio Code طراحی کرده که باز هم از الکترون جی اس برای ساخت آن استفاده شده است. همهی برنامههای قدرتمند میتوانند ثابت کنند که الکترون جی اس قدرت عرض اندام دارد و برای برنامهنویسی مناسب است.
ری اکت نیتیو (React Native)
این کتابخانه هم بر روی NodeJS توسعه یافته و اکنون به یک زبان برنامهنویسی برای اجرای گرافیکی ساختار یافته بر روی همه دستگاهها طراحی شد. تا جایی که چندین اپلیکیشن قدرتمند مانند اینستاگرام که با این کتابخانه ساخته شدهاند بر روی همین کتابخانه کار میکنند؛ بنابراین جاوا اسکریپت امروز به کمک چنین کتابخانههایی راه خود را به دنیای اپلیکیشن ها هم باز کرده است. البته این فریم ورک زیاد محبوب نیست ولی درحالتوسعه است.
یکی از مشکلات این فریم ورک ناسازگاری ورژن های مختلف بستهها با این فریم ورک است. ری اکت نیتیو ابتدا در شرکت فیسبوک برای بازنویسی اپلیکیشن اینستاگرام توسعه یافت.
اپلیکیشنهای پیشرونده تحت وب (Progressive Web Apps - PWA)
از زمانی که مرورگر کرومیوم توسعه پیدا کرد و به جاوا اسکریپت دسترسیهای بیشتری داد، شرکت گوگل استاندارد جدیدی را بنا کرد که بهواسطهٔ آن بتوان اپلیکیشنهای تحت وب با عنوان پیشرونده را توسعه داد؛ بهگونهای که این اپلیکیشنها کاملاً شبیه به برنامههای قابلاجرا کار کنند و شبیه به اپلیکیشنهای عادی به امکانات گوشی و کامپیوتر دسترسی داشته باشند. این یک موفقیت بزرگ برای جاوا اسکریپت است.
علاوه بر این زبان فلاتر هم بر پایه همین استاندارد، اپلیکیشنهای خود را اجرا میکند که نتیجه میگیریم در پشت بکاند دوباره از جاوا اسکریپت برای اجرا آنها استفاده شده است.
فریم ورک جانی فایو (Johnny-five)
فریم ورک جانی فایو برای ارتباط جاوا اسکریپت با سختافزار و درنتیجه دنیای رباتیک طراحی شده است. این فریم ورک با بردهای محبوب Arduino سازگاری دارد و میتوان با ترکیب آنها بردهای موردنیاز رباتیک و اینترنت اشیاء را هم برنامهریزی کرد؛ بنابراین میبینید که جاوا اسکریپت تا چه حدی پیش رفته و شاید روزی زبانهای اسمبلی و ماشین را هم کنار بزند.
آینده جاوا اسکریپت
شاید جاوا اسکریپت تنها زبانی نباشد که در آینده قدرت میگیرد، اما قطعاً یکی از قدرتمندترین زبانهای آینده خواهد بود. همین امروز درآمد برنامهنویسان جاوا اسکریپت طبق آمارها بالاتر از سایر زبانهاست و حتی در آمارهای کاربردی هم در رده سوم قرار گرفت. جاوا اسکریپت بهواسطه NodeJS آنقدر قدرت گرفته که ممکن است در آینده زبان رسمی همه پلتفرمهای جهان شود؛ همانطور که در پاراگراف بالا هم گفته شد، دنیای رباتیک هم به این زبان گره میخورد.
یادگیری جاوا اسکریپت
یادگیری جاوا اسکریپت ساده است؛ اما کمی به زمان نیاز دارد. صدالبته برای هر یادگیری نیاز به تمرین مستمر است؛ اما یکی از مزیتهای یادگیری این زبان، منابع زیادی است که در اینترنت بهصورت کاملاً رایگان هم وجود دارد و میتوانید با یک جستجوی ساده در اینترنت به آموزشهای بسیار خوبی دست پیدا کنید. برای مثال در سایت ایرانی تاپ لرن میتوانید حداقل 6 دوره رایگان جاوا اسکریپت را پیدا کنید. برای یادگیری این زبان باید تقریباً 3 ماه زمان بگذارید؛ شاید هم زودتر. این زمانبندی بستگی به توان، استعداد و زمان شما دارد؛ بنابراین ممکن است شما بتوانید در یک ماه کل جاوا اسکریپت را یاد بگیرید.
فراموش نکنید که یادگیری جاوا اسکریپت بهتنهایی کافی نیست و اگر میخواهید به یک حرفهای تبدیل شوید باید بستهها و در ادامه فریم ورکهای جاوا اسکریپت را هم یاد بگیرید. بهعلاوه جاوا اسکریپت زبانی است که با زبانهای HTML5 و CSS3 گره خورده و از ابتدا هم برای کار روی این زبانها طراحی شد؛ بنابراین برای استفاده مفید از جاوا اسکریپت باید بتوانید زبانهای HTML5 و CSS3 را هم فرا بگیرید که البته این زبانها زبانهای نشانه گذاری و شیوهنامه هستند و یادگیری آنها بسیار آسان است.
سخن پایانی
اگر میخواهید در آینده فناوری و کامپیوتر سهیم باشید، جاوا اسکریپت را یاد بگیرید. در آیندهای نزدیک جاوا اسکریپت نیمی از فضای فناوری را خواهد گرفت همانطور که همیشه در طراحی وبسایت دخیل است. چهبسا در آیندهای نزدیک سیستمعامل جدیدی بر اساس جاوا اسکریپت طراحی شود. قطعاً این زبان رقیبهای زیادی خواهد داشت؛ اما آنقدر کامل شده که بتوان روی آیندهاش حساب کرد.
جالب است بدانید شرکت مایکروسافت هم در آغاز کار مرورگرها، زبان وی بی اسکریپت را بر روی مرورگر محبوب خودش یعنی اینترنت اکسپلورر معرفی کرد. ولی چون این زبان خیلی انحصاری بود، دیگر مرورگرها نمیتوانستند از آن پشتیانی کنند و درنتیجه غرور مایکروسافت به ضررش تمام شد و وی بی اسکریپت به خاطرهها سپرده شد. وی بی اسکریپت بر پایه زبان ویژوآل بیسیک طراحی شده بود که البته خود ویژوآل بیسیک هم عمر زیادی نکرد.